home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SGI Freeware 1999 November
/
SGI Freeware 1999 November - Disc 2.iso
/
dist
/
fw_IZzip.idb
/
usr
/
freeware
/
src
/
zip
/
atari
/
atari.c.z
/
atari.c
Wrap
C/C++ Source or Header
|
1997-09-09
|
2KB
|
127 lines
/*
* ATARI.C
*
* Necessary interface functions, mostly for conversion
* of path names. (Is this *really* necessary? The C library should
* do this -- Jean-loup.)
*/
#ifdef ATARI_ST
#include <stdio.h>
#include <stdlib.h>
#include <tos.h>
#include <ext.h>
#define FNMAX 256
#define OF(sig) sig
char *st_fn OF((char *));
char *st_fn(s)
char *s;
{
static char tosname [ FNMAX ];
char *t = tosname;
while ( *t=*s++ ) {
if ( *t == '/' )
*t = '\\';
t++;
}
return(tosname);
}
int st_unlink(f)
char *f;
{
return(unlink(st_fn(f)));
}
/* Fake chmod with minimalistic functionality.
* [ anyway people will be in trouble with the readonly files
* produces by this, since 'normal' users don't own the
* 'tools' to manipulate these. ]
*/
int st_chmod(f, a)
char *f; /* file path */
int a; /* attributes returned by getfileattr() */
/* Give the file f the attributes a, return non-zero on failure */
{
if ( ! ( a & S_IWRITE ) )
if (Fattrib(st_fn(f), 1, FA_READONLY) < 0 )
return(-1);
return 0;
}
/*
* mktemp is not part of the Turbo C library.
*/
char *st_mktemp(s)
char *s;
{
char *t;
long i;
for(t=s; *t; t++)
if ( *t == '/' )
*t = '\\';
t -= 6;
i = (unsigned long)s % 1000000L;
do {
sprintf(t, "%06ld", i++);
} while ( Fsfirst(s, 0x21) == 0 );
return(s);
}
FILE *st_fopen(f,m)
char *f;
char *m;
{
return(fopen(st_fn(f),m));
}
int st_open(f,m)
char *f;
int m;
{
return(open(st_fn(f),m));
}
int st_stat(f, b)
char *f;
struct stat *b;
{
return(stat(st_fn(f),b));
}
int st_findfirst(n,d,a)
char *n;
struct ffblk *d;
int a;
{
return(findfirst( st_fn(n),(struct ffblk *)d,a));
}
int st_rename(s, d)
char *s, *d;
{
char tosname [ FNMAX ];
char *t = tosname;
while ( *t=*s++ ) {
if ( *t == '/' )
*t = '\\';
t++;
}
return(rename(tosname, st_fn(d)));
}
int st_rmdir(d)
char *d;
{
return(Ddelete(st_fn(d)));
}
#endif /* ?ATARI_ST */